这一题是一个模拟算法。
我采用递归的方式解题。
头文件
没有什么特殊的。
#include <iostream>
主函数
在主函数中只需要以下几件事:
- 输入
- 跑一遍递归函数
- 输出
int main()
{
int a, b;
cin>>a>>b;
cout<<f(a, b)<<endl;
return 0;
}
可见递归函数是程序重点。
递归函数
首先,声明函数,一定要在main前面!!!int f(int a, int b);
其次,在后面写函数。
- 如果已经满足条件(第一个数比第二个数大),则return 0。
- 否则次数加1,模拟下一年。这里次数就是返回值。
int f(int a, int b)
{
if(a > b) return 0;
else return 1 + f(3*a, 2*b);
}
汇总
最后,把前面所有的合起来,得到:
#include <iostream>
using namespace std;
int f(int a, int b);
int main()
{
int a, b;
cin>>a>>b;
cout<<f(a, b)<<endl;
return 0;
}
int f(int a, int b)
{
if(a > b) return 0;
else return 1 + f(3*a, 2*b);
}